package com.company.algo.huawei;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 写出一个程序，接受一个十六进制的数，输出该数值的十进制表示。
 输入例子1:
 0xA
 0xAA
 输出例子1:
 10
 170
 解析：十六进制（简写为hex或下标16）在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F（或a~f）表示，其中:A~F表示10~15，这些称作十六进制数字。
 */
public class IncrementalConversion {
    public static void main(String[] args) {
        Map<Character,Integer> map = new HashMap<>();
        map.put('A',10);
        map.put('B',11);
        map.put('C',12);
        map.put('D',13);
        map.put('E',14);
        map.put('F',15);
        //16进1
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            String str16 = sc.nextLine();
            String str10 = parse(str16,map);
            System.out.println(str10);
        }
    }

    //0xAA
    private static String parse(String str16, Map<Character,Integer> dict) {
        String str = str16.substring(2);    //AA
        char[] chs = str.toCharArray();
        int n = 0;
        for (int i = chs.length-1; i >=0 ; i--) {
            int tmp;
            if (Character.isDigit(chs[i])) tmp = Character.getNumericValue(chs[i]);
            else tmp = dict.get(chs[i]);
            n = n*16+tmp;
        }
        return String.valueOf(n);
    }
}
